// 如果在将所有大写字符转换为小写字符、并移除所有非字母数字字符之后，短语正着读和反着读都一样。则可以认为该短语是一个 回文串 。
// 字母和数字都属于字母数字字符。

// 思路，双指针法，分别指向首尾，比较是否相同，直到临界条件
// 时间复杂度：O(n)
// 空间复杂度：O(1)

function isPalindrome(str) {
    str = str.replace(/[^\da-zA-Z]/g, '').toLowerCase()
    let left = 0
    let right = str.length - 1
    while (left < right) {
        if (str[left] !== str[right]) {
            return false
        }
        left++
        right--
    }
    return true
}

let str = 'A man, a plan, a canal: Panama'
str = "ab_a"
console.log(isPalindrome(str));